namespace FileSystemModels.Interfaces
{
  using FileSystemModels.Models;

  /// <summary>
  /// Define an interface for configuring and reading setting
  /// and user profile data for the explorer (tool window) viewmodel.
  ///
  /// This interface includes usage of the <see cref="ExplorerSettingsModel"/> class.
  /// </summary>
  public interface IConfigExplorerSettings
  {
    /// <summary>
    /// Configure this viewmodel (+ attached browser viewmodel) with the given settings.
    /// </summary>
    /// <param name="settings"></param>
    /// <returns></returns>
    bool ConfigureExplorerSettings(ExplorerSettingsModel settings);

    /// <summary>
    /// Compare given <paramref name="input"/> settings with current settings
    /// and return a new settings model if the current settings
    /// changed in comparison to the given <paramref name="input"/> settings.
    /// 
    /// Always return current settings if <paramref name="input"/> settings is null.
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    ExplorerSettingsModel GetExplorerSettings(ExplorerSettingsModel input);
  }
}